package decorator;

/**
 * 配料类——鸡蛋
 * 具体的装饰者角色
 */
public class Egg extends Garnish {


    /**
     * 有参构造方法
     *
     * @param fastFood 主食
     */
    public Egg(FastFood fastFood) {
        // 调用父类 Garnish 的构造函数
        super(fastFood, 1, "鸡蛋价格");
    }

    @Override
    public float cost() {
        // 鸡蛋的价格 + 主食(可能包含其他配料)的价格
        // 鸡蛋的价格：super.getPrice()
        // 主食(含其他配料)：super.getFastFood().getPrice()，但为了保证子类的方法调用，此处选择 super.getFastFood().cost()
        return super.getPrice() + super.getFastFood().cost();
    }

    /**
     * 重写父类中的描述方法，因为每种主食和配料都有各自的描述信息
     * @return
     */
    @Override
    public String getDesc() {
        return super.getDesc() +" + "+ super.getFastFood().getDesc();
    }
}
